Uploaded image for project: 'Teeda'
  1. Teeda
  2. TEEDA-375

ダウンロードを IE でキャンセルした際の対応について

XMLWordPrintable

    • Type: Icon: Task Task
    • Resolution: Fixed
    • Priority: Icon: Major Major
    • 1.0.11
    • Affects Version/s: None
    • Component/s: None
    • None

      下記はTeeda側でキャンセル時にチェックドな例外を投げたり、
      ClientAbortExceptionを握りつぶすなどの対処が必要かもしれない.

      Seasar-user:10949

      CSVファイルのダウンロードで「開く、保存、キャンセル」画面でキャンセルしたとこ

      下のログにあるような「ClientAbortException」となる現象た発生しております。

      CSVファイルのダウンロードは、Actionクラスで
      public Class doHoge() {
      // レスポンスにダウンロード用のヘッダー設定を行い
      response.setContentLength((int) size);
      response.setContentType("text/csv");
      response.setHeader("Content-Disposition","inline;filename=\"" + fileName + "
      \"");

      //内容を書き出して
      OutputStream out = response.getOutputStream();
      int c;
      while ((c = in.read()) != -1)

      { out.write(c); }

      out.close();
      in.close();
      // 終了したことをJSFに通知する。
      page.getFacesContext().responseComplete();
      return null;
      }
      として実現しています。
      ログを見る限りは、Actionクラス終了後の出来事のようなのです。
      「ClientAbortException」を無視するような対応が必要だと思うのですが・・・

      別の目的でIntercepterを作成しています。この中で、
      件のエラーを無視するコードを下のように記述すれば対応できるのでしょうか?
      try

      { Object ret = invocation.proceed(); // 本来の対象メソッドの実行部分 }

      catch (ClientAbortException e)

      { // 無視 }

      よろしくお願いします。

      エラーのログです。
      DEBUG 2007-09-13 01:07:21,609 [http-8080-Processor25] [ESSR0043]kh.web.MenuAct
      ion$$EnhancedByS2AOP$$bde56dが呼び出した対象が不正です。理由はClientAbortExcep
      tion: java.net.SocketException: Connection reset by peer: socket write error
      org.seasar.framework.exception.InvocationTargetRuntimeException: [ESSR0043]kh.
      web.MenuAction$$EnhancedByS2AOP$$bde56dが呼び出した対象が不正です。理由はClien
      tAbortException: java.net.SocketException: Connection reset by peer: socket w
      rite error
      at org.seasar.framework.util.MethodUtil.invoke(MethodUtil.java:58)
      at org.seasar.framework.beans.impl.BeanDescImpl.invoke(BeanDescImpl.java:213)
      at org.seasar.teeda.extension.html.impl.HtmlComponentInvokerImpl.invoke(HtmlC
      omponentInvokerImpl.java:159)
      at org.seasar.teeda.extension.html.impl.HtmlActionListener.processAction(Html
      ActionListener.java:62)
      at javax.faces.component.UICommand.broadcast(UICommand.java:149)
      at org.seasar.teeda.extension.component.html.THtmlCommandButton.broadcast(THt
      mlCommandButton.java:53)
      at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:192)
      at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:117)
      at org.seasar.teeda.core.lifecycle.impl.InvokeApplicationPhase.executePhase(I
      nvokeApplicationPhase.java:29)
      at org.seasar.teeda.core.lifecycle.AbstractPhase.execute(AbstractPhase.java:5
      5)
      at org.seasar.teeda.core.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:9
      4)
      at javax.faces.webapp.FacesServlet.service(FacesServlet.java:92)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applicati
      onFilterChain.java:269)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilter
      Chain.java:188)
      at org.seasar.framework.container.hotdeploy.HotdeployFilter.doFilter(Hotdeplo
      yFilter.java:63)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applicati
      onFilterChain.java:215)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilter
      Chain.java:188)
      at org.seasar.framework.container.filter.S2ContainerFilter.doFilter(S2Contain
      erFilter.java:63)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applicati
      onFilterChain.java:215)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilter
      Chain.java:188)
      at org.seasar.extension.filter.EncodingFilter.doFilter(EncodingFilter.java:62
      )
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applicati
      onFilterChain.java:215)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilter
      Chain.java:188)
      at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.
      java:210)
      at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.
      java:174)
      at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:1
      27)
      at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:1
      17)
      at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.ja
      va:108)
      at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151
      )
      at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
      at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.proces
      sConnection(Http11BaseProtocol.java:665)
      at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.j
      ava:528)
      at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollower
      WorkerThread.java:81)
      at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.j
      ava:685)
      at java.lang.Thread.run(Thread.java:595)

            Assignee:
            shot shot
            Reporter:
            shot shot
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved: